package org.dromara.patrol.service;

import org.dromara.common.mybatis.core.page.PageQuery;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.patrol.domain.PatrolReport;
import org.dromara.patrol.domain.bo.*;
import org.dromara.patrol.domain.vo.CalculateScoreVo;
import org.dromara.patrol.domain.vo.PatrolReportVo;

import java.util.Collection;
import java.util.List;

/**
 * 巡店管理-巡店报告Service接口
 *
 * @author LionLi
 * @date 2024-03-25
 */
public interface IPatrolReportService {

    /**
     * 查询巡店管理-巡店报告
     */
    PatrolReportVo queryById(Long reportId);

    /**
     * 查询巡店管理-巡店报告列表
     */
    TableDataInfo<PatrolReportVo> queryPageList(PatrolReportQuery query, PageQuery pageQuery);

    /**
     * 查询巡店管理-巡店报告列表
     */
    List<PatrolReportVo> queryList(PatrolReportBo bo);

    /**
     * 新增巡店管理-巡店报告
     */
    Boolean insertByBo(PatrolReportBo bo);

    /**
     * 修改巡店管理-巡店报告
     */
    Boolean updateByBo(PatrolReportBo bo);

    /**
     * 校验并批量删除巡店管理-巡店报告信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    /**
     * 计算得分评分项
     * @param calculateScoreBo
     * @return
     */
    CalculateScoreVo calculateScore(CalculateScoreBo calculateScoreBo);

    /**
     * 审核
     * @param bo    巡店报表对象
     * @return      是否成功
     */
    int approval(PatrolApprovalBo bo);

    /**
     * 整改巡店报表
     * @param bo    巡店报表对象
     * @return      是否成功
     */
    int rectify(PatrolRectifyBo bo);

    /**
     * 新增草稿箱
     * @param bo    巡店报表对象
     * @return      是否成功
     */
    Long checkDraft(PatrolReportBo bo);

    /**
     * 根据任务id查询巡店报告
     * @param taskId    任务id
     * @return          巡店报告
     */
    PatrolReport selectByTaskId(Long taskId);

    /**
     * 通过任务id生成报告
     * @param taskId    任务id
     * @return          报告对象
     */
    PatrolReport createReport(Long taskId);

    /**
     * 删除报告
     * @param storeId
     */
    void deletePatrolReport(Long storeId);
}
